package br.gov.mi.corporativo.dominio.boundary.comum.municipio;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.comum.Municipio;

@Path("municipios")
public class MunicipioRestAdapter extends SpringBeanAutowiringSupport {


	@Autowired
	private MunicipioEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<Municipio> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("id/{idMunicipio}")
	@Produces({MediaType.APPLICATION_JSON})
	public Municipio recuperarPorIdMunicipio(@PathParam("idMunicipio")Long idMunicipio){
		return service.recuperarPorIdMunicipio(idMunicipio);
	}
	
	@GET
	@Path("uf/{uf}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Municipio> recuperarPorUf(@PathParam("Uf")Long uf){
		return service.recuperarPorUf(uf);
	}
	
	@GET
	@Path("nome/{nmMunicipio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Municipio> recuperarPorNmMunicipio(@PathParam("nmMunicipio")String nmMunicipio){
		return service.recuperarPorNmMunicipio(nmMunicipio);
	}
	
	@GET
	@Path("codibge/{cdMunicipioIbge}")
	@Produces({MediaType.APPLICATION_JSON})
	public Municipio recuperarPorCodMunicipioIbge(@PathParam("cdMunicipioIbge")Long cdMunicipioIbge){
		return service.recuperarPorCdMunicipioIbge(cdMunicipioIbge);
	}
	
	@GET
	@Path("codsiafi/{codMunicipioSiafi}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Municipio> recuperarPorCodMunicipioSiafi(@PathParam("cdMunicipioSiafi")Long cdMunicipioSiafi){
		return service.recuperarPorCdMunicipioSiafi(cdMunicipioSiafi);
	}
	
	
	@GET
	@Path("mesoregiao/{codMesoRegiao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Municipio> recuperarPorCodMesoRegiao(@PathParam("cdMesoRegiao")Long cdMesoRegiao){
		return service.recuperarPorCdMesoRegiao(cdMesoRegiao);
	}
	
	@GET
	@Path("microregiao/{codMicroRegiao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<Municipio> recuperarPorCodMicroRegiao(@PathParam("cdMicroRegiao")Long cdMicroRegiao){
		return service.recuperarPorCdMicroRegiao(cdMicroRegiao);
	}
	
	
}
